package com.blkj.iam.system.model.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.blkj.iam.common.base.BaseEntity;
import com.blkj.iam.system.model.vo.ShowDeptInfoVO;
import lombok.Getter;
import lombok.Setter;

/**
 * 部门实体对象
 *
 * @author Ray.Hao
 * @since 2024/06/23
 */
@TableName("sys_dept")
@Getter
@Setter
public class Dept extends BaseEntity {

    /**
     * 部门名称
     */
    private String name;
    /**
     * 部门编码
     */
    private String code;
    /**
     * 部门简称
     */
    private String nameAbbr;
    /**
     * 父节点id
     */
    private Long parentId;
    /**
     * 父节点id路径
     */
    private String treePath;
    /**
     * 显示顺序
     */
    private Integer sort;
    /**
     * 状态(1-正常 0-禁用)
     */
    private Integer status;
    /**
     * 创建人 ID
     */
    private Long createBy;
    /**
     * 更新人 ID
     */
    private Long updateBy;
    /**
     * 是否删除(0-否 1-是)
     */
    private Integer isDeleted;
    /**
     * 租户ID
     */
    private Long tenantId;
    /**
     * 雪花ID
     */
    private String idStr;
    /**
     * 父节点雪花ID
     */
    private String parentIdStr;
    /**
     * 创建者
     */
    private String createUser;
    /**
     * 修改者
     */
    private String updateUser;
    /**
     * 机构类型 0-平台 1-监管 2-贸易 3-供箱单位 4-担保商 5-供应商 6-供货方 7-承运单位
     */
    private String departType;
    /**
     * 监管区类型（只是监管区用到）0：本场站 1：其他场站
     */
    private Integer jgType;
    /**
     * 用户自定义orgCode
     */
    private String customOrgCode;
    /**
     * 过贸一体(0:单一过货商 1：过贸一体)
     */
    private String gmType;
    /**
     * 营业执照
     */
    private String licenseFile;
    /**
     * 贸易合同
     */
    private String tradeContract;
    /**
     * 仓储合同
     */
    private String storageContract;
    /**
     * 编号
     */
    private String mineCode;
    /**
     * 联系人
     */
    private String linkMan;
    /**
     * 联系电话
     */
    private String linkPhone;
    /**
     * 联系人账号
     */
    private String linkAccount;
    /**
     * 蒙古名称
     */
    private String mgName;
    /**
     * 地址
     */
    private String address;
    /**
     * 国家(0:外蒙  1：俄罗斯  2：中国 3：跨国)
     */
    private Integer country;
    /**
     * 监管区ID数组
     */
    private String jgqIds;
    /**
     * 社会信用代码
     */
    private String idCard;


    // 转换为
    public static ShowDeptInfoVO toShowDeptInfo(Dept dept) {
        ShowDeptInfoVO showDeptInfo = new ShowDeptInfoVO();
        showDeptInfo.setId(dept.getId().toString());
        showDeptInfo.setParentId(dept.getParentId().toString());
        showDeptInfo.setDepartName(dept.getName());
        showDeptInfo.setDepartNameAbbr(dept.getNameAbbr());
        showDeptInfo.setDepartOrder(dept.getSort());
        showDeptInfo.setOrgCode(dept.getCode());
        showDeptInfo.setStatus(dept.getStatus());
        showDeptInfo.setDelFlag(dept.getIsDeleted());
        showDeptInfo.setCreateBy(dept.getCreateUser());
        showDeptInfo.setCreateTime(dept.getCreateTime());
        showDeptInfo.setUpdateBy(dept.getUpdateUser());
        showDeptInfo.setUpdateTime(dept.getUpdateTime());
        showDeptInfo.setTenantId(dept.getTenantId());
        showDeptInfo.setIzLeaf(dept.getParentId() == 0 ? 0 : 1);
        if (dept.getParentId() == 0) {
            showDeptInfo.setOrgType("1");
        }else {
            showDeptInfo.setOrgType("2");
        }
        showDeptInfo.setDepartType(dept.getDepartType());
        showDeptInfo.setCustomOrgCode(dept.getCustomOrgCode());
        showDeptInfo.setGmType(dept.getGmType());
        showDeptInfo.setCountry(dept.getCountry());
        showDeptInfo.setLicenseFile(dept.getLicenseFile());
        showDeptInfo.setTradeContract(dept.getTradeContract());
        showDeptInfo.setStorageContract(dept.getStorageContract());
        showDeptInfo.setMineCode(dept.getMineCode());
        showDeptInfo.setLinkMan(dept.getLinkMan());
        showDeptInfo.setLinkPhone(dept.getLinkPhone());
        showDeptInfo.setLinkAccount(dept.getLinkAccount());
        showDeptInfo.setMgName(dept.getMgName());
        showDeptInfo.setAddress(dept.getAddress());
        showDeptInfo.setJgqIds(dept.getJgqIds());
        showDeptInfo.setJgType(dept.getJgType());
        showDeptInfo.setIdCard(dept.getIdCard());
        showDeptInfo.setIdStr(dept.getIdStr());
        return showDeptInfo;
    }
}